1. Technical Field
The present invention relates generally to hierarchical directories in computer systems, and more particularly, to a system for providing a web browser display of a selected part of a tree-structured directory of hierarchically-related entities in a computer system.
2. Statement of the problem
There are presently several known “complete-tree” implementations for displaying a tree-structured directory of hierarchically-related entities via a web browser. These alternatives require blocks of information representing the entire tree to be sent from a server to a browser client. That is, the server sends everything necessary for the browser to render and maintain the complete tree as the user navigates around in it. These implementations typically involve the transfer of significant amounts of data from the server to the client.
One example of a complete-tree implementation uses Java applet controls. Numerous commercial and freeware Java applets exist from which a navigation tree can be implemented. However, these designs, while quite competent, do not integrate visually with the browser as nicely as other implementations, and may require large file transfers to the browser. As the number of tree objects increases, so does the loading time, and object numbers in the hundreds show significant performance hits.
Another example of a complete-tree implementation employs Javascript controls. Numerous commercial and freeware Javascript controls exist from which a navigation tree can be implemented. These designs integrate visually very well with the browser, but they may require large file transfers to the browser. As the number of tree objects increases, so does the loading time, and when a tree of interest includes hundreds of object numbers (or more), significant performance degradation occurs.
A further example of an existing implementation for displaying a tree-structured directory is a so-called “thin-client” display. This implementation requires that all tree processing be done on the server side. The entire tree is sent to the browser as raw HTML code with formatting embedded. While this implementation keeps the client-processing overhead down, the tree data transfer times are very large for large trees.
Solution to the Problem
The present invention overcomes the aforementioned problems of the prior art and achieves an advance in the field by providing a segmented-tree system for web browser display of a selected part of a tree-structured directory of hierarchically-related entities in a computer system. In the segmented-tree design of the present system, only the amount of information necessary to render the part of the tree in which the user is interested is transmitted from a server to the browser client. Detailed object information (such as a list of the node's children) is sent only for expanded nodes in the part of the tree being displayed. The server maintains information describing the complete tree, and it serves this information to the client in segments called ‘views’. This method offers a number of advantages over the prior art, including the fact that it requires the transfer of relatively small amounts of data from the server to the web browser client, keeping loading time to a minimum. For trees served over a LAN, display response is virtually instantaneous. In addition, the present system scales very well. There is only a slight increase in server processing time for increased numbers of potentially displayable tree objects. Client-side and network processing time is essentially independent of the size of the tree.
In the system of the present invention, the tree state for a particular client is maintained in relatively small data strings transferred back and forth. This enables the server to handle tree requests from many clients without special synchronization or the storage of the client state. Because the client/server tree state is kept in sync as the user navigates and modifies objects in the tree, the browser display always represents the true state of the tree. Furthermore, modifications by other clients operating concurrently are incorporated in the display segments returned as a result of the other users' actions. In addition, the data and presentation layers of the tree can easily be kept separate, thereby providing ease of development and maintenance.